/*
    KMC Simulation
    Copyright (c) 2012 Filip Rozbořil

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "Histogram.h"
#include "Grid.h"
#include "ClusterCollection.h"
#include "includes.h"

Histogram :: Histogram(Grid& g) : mChainCount(UINT32_C(0)), mAtomCount(g.getAtomCount())
{
	ClusterCollection ccol(g);
 	vector<uint32_t> counts = ccol.getClusters();
 	mMaxLength = counts.size();
 	mChainLengths = new uint32_t[mMaxLength];
 	for(vector<uint32_t>::size_type i = 0; i < counts.size(); i++)
 	{
 	 	mChainCount += counts[i];
 	 	mChainLengths[i] = counts[i];
 	}
}

ostream& operator<<(ostream& os, Histogram& hist)
{
 	for(uint32_t i = 0; i < hist.mMaxLength; i++)	
		os << (i + 1) << "\t" << hist.mChainLengths[i] << endl;
	
	return os;
}
